home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1988 January
/
64er_Magazin_88-01_1988_Markt__Technik_de_Side_B.d64
/
hyper iii .src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
80 lines
100 sys 9*4096:.opt oo: *= $c000
105 ze = 149
110 hrz = ze+2
115 ;*******************
120 ;* hyperscreen iii *
125 ;* by hermann *
130 ;* schinagl *
135 ;* 17.10.1987 *
140 ;*******************
145 ; vorbereiten des vic und der irq
150 lda #$c8:sta $d016:lda #0:sta $d020:sta $d021:jsr $e544
155 lda #8:sta $a7
160 jsr setspr:jsr irqon:wait jmp wait
165 ;-------------------------
170 ; systeminterrrupt loeschen
175 irqon sei:lda #0:sta $dc0e
180 ; irq einstellen
185 lda #<irq:ldx #>irq:sta $314:stx $315
190 ; rasterzeileirq vorbereiten
195 lda #ze:sta $d012:lda #1:sta $d01a
200 lda $d011:and #$7f:sta $d011
205 cli:rts
210 ; alle sprite positionen einstellen
215 ;-------------------------
220 setspr ldx #0:m1 lda tab1,x:sta $d000,x:inx
225 cpx #17:bne m1:lda #255:sta $d015
230 sta $d01d
235 ; spritefarben vorbereiten
240 lda #7:tay:c1 sta $d027,y:dey:bpl c1
245 ldx #$ff:ldy #7:m2 txa:sta $7f8,y:dex:dey:bpl m2
250 ; und auch die images einstellen
255 ldy #0:tya:loop sta $3d00,y:sta $3e00,y:sta $3f00,y
260 iny:bne loop:jmp reset
265 ; irq, um rahmen abzuschalten
270 ; abwarten bis strahl in richtiger position
275 ;-------------------------
280 irq ldx #7:i1 dex:bne i1:nop:nop
285 ldx #22:m5 bit $ea:dec $d016; 40 spalten
290 inc $d016; 38 spalten
295 ldy $d012; rasterzeile laden
300 ;und bildschirm gezielt verschieben
305 dey:nop:tya:and #7:ora #$18
310 sta $d011:nop:nop:nop:nop
315 dex:bpl m5; ende der schleife
320 lda #27:sta $d011:lda #1:sta $d019
325 ; alte konfiguration wieder herstellen
330 jsr scroll; text um ein pixel weiter scrollen
335 ldx #$f1:k dex:bne k:jmp $febc
340 ;sprite zeilenweise durchscrollen
345 scroll ldx #0:do1 clc:rol $3d00,x
350 rol $3fc8,x:rol $3fc7,x:rol $3fc6,x
355 rol $3f88,x:rol $3f87,x:rol $3f86,x
360 rol $3f48,x:rol $3f47,x:rol $3f46,x
365 rol $3f08,x:rol $3f07,x:rol $3f06,x
370 rol $3ec8,x:rol $3ec7,x:rol $3ec6,x
375 rol $3e88,x:rol $3e87,x:rol $3e86,x
380 rol $3e48,x:rol $3e47,x:rol $3e46,x
385 rol $3e08,x:rol $3e07,x:rol $3e06,x
390 inx:inx:inx:cpx #$18:bne do1
395 dec $a7:bne do5
400 do2 ldy #0:sty $fb:lda ($9e),y; byte aus text holen
405 asl a:rol $fb:asl a:rol $fb; mit acht multiplizieren
410 asl a:rol $fb:sta $fa
415 lda $fb:adc #$d8:sta $fb; offset fuer zeichensatz addieren
420 ldx #0:ldy #0:lda #$33:sta 1; auf cahr rom umschalten
425 do3 lda ($fa),y:sta $3d00,x; char image holen und speichern
430 inx:inx:inx:iny:cpy #8:bne do3; schon der ganze buchstabe
435 sty $a7:lda #$37:sta 1; und retourschalten
440 inc $9e:bne do4:inc $9f:do4 ldy #0:lda ($9e),y; text um eins erhoehen
445 bne do5
450 reset lda #<sctext:ldx #>sctext:sta $9e:stx $9f:do5 rts
455 ;sprite positionen
460 ;---------------------------
465 tab1 .byt 241,hrz,41,hrz,41+48,hrz
470 .byt 41+(2*48),hrz,41+(3*48),hrz
475 .byt 41+(4*48),hrz
480 .byt 25,hrz,25+48,hrz,193
485 sctext .asc "hyperscreen iii written by hermann schinagl "
490 .byt 0; abschlusz